run.php
<?php
require_once(dirname(dirname(dirname(dirname(dirname(__DIR__))))).'/dependency-manager.php');
class TestNewCompo extends \RBear\Tester {
public function prepare(){
require_once(__DIR__.'/sample/Note.php');
}
public function testDisplayView(){
$this->clearCompiledFiles();
$lia = new \Liaison();
$lia->addPackage(['dir'=>__DIR__.'/sample/','name'=>'fresh']);
$note = $lia->package('fresh');
$note->setFinder(
function($table,$lookup){
return (object)[
(object)[
'id'=>null,
'body'=>'a basic, default note.',
'name'=>'a dumb note'
]];
}
);
$note->onRequest_Setup(null,true);
$view = $note->view(null,['pattern'=>'/']);
ob_start();
echo $view;
$output = ob_get_clean();
echo $output;
if (strpos($output,'a basic, default note. ')!==false
&&strpos($output,'<h1>Note: a dumb note</h1>')!==false
&&strpos($output,'<lia-route')===false){
return true;
}
return false;
}
public function testDeliverStaticRoute(){
$this->clearCompiledFiles();
$lia = new \Liaison();
$compo = new \FreshCompo(__DIR__);
$compo->setFinder(
function($table,$lookup){
return (object)[
(object)[
'id'=>null,
'body'=>'a basic, default note.',
'name'=>'a dumb note'
]];
}
);
$lia->addComponent($compo);
$lia->Event->AddFreshCompo(new \Li\Note(),true);
ob_start();
$lia->deliver('/');
$output = ob_get_clean();
echo $output;
if (strpos($output,'a basic, default note. ')!==false
&&strpos($output,'<h1>Note: a dumb note</h1>')!==false
&&strpos($output,'<lia-route')===false){
return true;
}
return false;
}
public function testDeliverDynamicRoute(){
$this->clearCompiledFiles();
$lia = new \Liaison();
$compo = new \FreshCompo(__DIR__);
$compo->setFinder(
function($table,$lookup){
return (object)[
(object)[
'id'=>$lookup,
'body'=>$lookup.'a basic, default note.',
'name'=>'a dumb note'
]];
}
);
$lia->addComponent($compo);
$lia->Event->AddFreshCompo(new \Li\Note(),true);
ob_start();
$lia->deliver('/note-3/');
$output = ob_get_clean();
echo $output;
if (strpos($output,'a basic, default note. ')!==false
&&strpos($output,'<h1>Note: a dumb note</h1>')!==false
&&strpos($output,'<p>MD::::id:3a basic, default note.::::DM</p>')!==false
&&strpos($output,'<p>MD::::id:*a basic, default note.::::DM</p>')!==false
&&strpos($output,'<lia-route')===false){
return true;
}
return false;
}
public function testDeliverFormEdit(){
$this->clearCompiledFiles();
$lia = new \Liaison();
$compo = new \FreshCompo(__DIR__);
$compo->setFinder(
function($table,$lookup){
return (object)[
(object)[
'id'=>$lookup,
'body'=>$lookup.'a basic, default note.',
'name'=>'a dumb note'
]];
}
);
$lia->addComponent($compo);
$lia->Event->AddFreshCompo(new \Li\Note(),true);
$_GET['id'] = 6836736;
ob_start();
$lia->deliver('/edit/');
$output = ob_get_clean();
echo $output;
if (strpos($output,'<input name="id" value="id:6836736;" type="hidden"><input name="fresh_table" value="note" type="hidden">')!==false
&&strpos($output,'<form action="/submit/" method="POST">')!==false
&&strpos($output,'<input type="text" name="body" value="id:6836736;a basic, default note.">')!==false
&&strpos($output,'<lia-route')===false){
return true;
}
return false;
}
public function testDeliverFormCreate(){
$this->clearCompiledFiles();
$lia = new \Liaison();
$compo = new \FreshCompo(__DIR__);
$compo->setFinder(
function($table,$lookup){
return (object)[
(object)[
'id'=>$lookup,
'body'=>'',
'name'=>''
]];
}
);
$lia->addComponent($compo);
$lia->Event->AddFreshCompo(new \Li\Note(),true);
unset($_GET['id']);
ob_start();
$lia->deliver('/edit/');
$output = ob_get_clean();
echo $output;
if (strpos($output,'<input name="id" value="id:new;" type="hidden"><input name="fresh_table" value="note" type="hidden">')!==false
&&strpos($output,'<form action="/submit/" method="POST">')!==false
&&strpos($output,'<input type="text" name="body" value="">')!==false
&&strpos($output,'<lia-route')===false){
return true;
}
return false;
}
public function testDeliverSubmitNew(){
$this->clearCompiledFiles();
$lia = new \Liaison();
$compo = new \FreshCompo(__DIR__);
$compo->setFinder(
function($table,$lookup){
return (object)[
(object)[
'id'=>$lookup,
'body'=>'',
'name'=>''
]];
}
);
$success = false;
$compo->setSubmitter(
function($table,$data,$itemId,$passthru) use (&$success){
if ($table=='note'
&&$data==[
'name'=>['A new note'],
'body'=>['A good, new paragraph, telling you all about whatever this note is about. It\'s new!'],
'id' => ['']
]
&&$itemId==''
&&$passthru==[
'pattern'=>'@POST./submit/',
'redirect_url'=>'/'
]
){
$success = true;
}
}
);
$lia->addComponent($compo);
$lia->Event->AddFreshCompo(new \Li\Note(),true);
$_SERVER['REQUEST_METHOD'] = 'POST';
$_POST =
[
'id'=>'',
'name'=>'A new note',
'body'=> 'A good, new paragraph, telling you all about whatever this note is about. It\'s new!',
'fresh_table'=>'note'
];
ob_start();
$lia->deliver('/submit/');
$output = ob_get_clean();
if (trim($output)!='')$success = false;
echo "output: ";
var_dump($output);
return $success;
}
protected function clearCompiledFiles(){
$dir = __DIR__.'/sample/compiled/';
if (is_dir($dir))$this->rmdirRecursive($dir);
}
protected function rmdirRecursive($dir) {
$files = array_diff(scandir($dir), array('.','..'));
foreach ($files as $file) {
(is_dir("$dir/$file")) ? $this->rmdirRecursive("$dir/$file") : unlink("$dir/$file");
}
return rmdir($dir);
}
}
\TestNewCompo::runAll();